
import 'dart:math';

///List的扩展函数
extension ListNullExtension<E> on List<E?>{

  ///过滤出非空元素
  List<E> filterNotNull(){
    List<E> result = [];
    for(var e in this){
      if(e!=null){
        result.add(e);
      }
    }
    return result;
  }

  ///随机一个元素
  E randomNotNull(){
    var notNullIndex = [];
    for(var i = 0;i<length;i++){
      if(this[i]!=null){
        notNullIndex.add(i);
      }
    }
    var randomIndex = notNullIndex[Random().nextInt(notNullIndex.length)];
    return this[randomIndex]!;
  }
}

extension ListExtension<E> on List<E>{

  ///随机一个元素
  E random(){
    return this[Random().nextInt(length)];
  }

  ///遍历元素，求和
  int sum(int Function(E element) combine) {
    var sum = 0;
    forEach((element) {
      sum += combine(element);
    });
    return sum;
  }
}